package br.com.arosa.dao;

import java.util.*;
import java.sql.*;
import br.com.easynet.database.DataSet;
import br.com.jdragon.dao.*;
import br.com.arosa.transfer.*;

public class Tb_produtoDAO extends ObjectDAO { 
	 public Tb_produtoDAO(DAOFactory dao) throws Exception {
		 setDAOFactory(dao);
 		 con = dao.create();
 	 }

	 public void insert(Tb_produtoT tb_produtoT ) throws Exception { 
		 PreparedStatement pStmt=null;
		 try {
			 String sql = "insert into tb_produto  ( id_produto, descricao, referencia, unidade_medida, preco_compra, lucro, preco_venda) values ( ? , ? , ? , ? , ? , ? , ? )";
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getId_produto());
			 pStmt.setObject(2, tb_produtoT.getDescricao());
			 pStmt.setObject(3, tb_produtoT.getReferencia());
			 pStmt.setObject(4, tb_produtoT.getUnidade_medida());
			 pStmt.setObject(5, tb_produtoT.getPreco_compra());
			 pStmt.setObject(6, tb_produtoT.getLucro());
			 pStmt.setObject(7, tb_produtoT.getPreco_venda());
			 pStmt.execute();
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { 
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public void update(Tb_produtoT tb_produtoT ) throws Exception { 
		 PreparedStatement pStmt=null;
		 try {
			 String sql = "update tb_produto set  descricao=?, referencia=?, unidade_medida=?, preco_compra=?, lucro=?, preco_venda=?  where  id_produto=?";
 			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getDescricao());
			 pStmt.setObject(2, tb_produtoT.getReferencia());
			 pStmt.setObject(3, tb_produtoT.getUnidade_medida());
			 pStmt.setObject(4, tb_produtoT.getPreco_compra());
			 pStmt.setObject(5, tb_produtoT.getLucro());
			 pStmt.setObject(6, tb_produtoT.getPreco_venda());
			 pStmt.setObject(7, tb_produtoT.getId_produto());
			 pStmt.execute();
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { 
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public void delete(Tb_produtoT tb_produtoT ) throws Exception { 
		 PreparedStatement pStmt=null;
		 try {
			 String sql = "delete from tb_produto where  id_produto=?";
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getId_produto());
			 pStmt.execute();
		 } catch (Exception e)  {
 			  throw e;
 		} finally {
 			 try { 
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 private List<Tb_produtoT> resultSetToObjectTransfer(ResultSet rs) throws Exception { 
		 List<Tb_produtoT> objs = new Vector();
		 while (rs.next()) { 
 			 Tb_produtoT tb_produtoT = new Tb_produtoT();
			 tb_produtoT.setId_produto(rs.getInt("id_produto"));
			 tb_produtoT.setDescricao(rs.getString("descricao"));
			 tb_produtoT.setReferencia(rs.getString("referencia"));
			 tb_produtoT.setUnidade_medida(rs.getString("unidade_medida"));
			 tb_produtoT.setPreco_compra(rs.getDouble("preco_compra"));
			 tb_produtoT.setLucro(rs.getDouble("lucro"));
			 tb_produtoT.setPreco_venda(rs.getDouble("preco_venda"));
			 objs.add(tb_produtoT);
 		 }
 		 return objs; 
 	 }
	 public List<Tb_produtoT> getAll() throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto"; 
			 pStmt = con.prepareStatement(sql);
			 rs = pStmt.executeQuery();
 			 List<Tb_produtoT> list = resultSetToObjectTransfer(rs);
 			 return list; 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getById(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  id_produto=?"; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getId_produto());
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getById_produto(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  id_produto = ? "; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getId_produto());
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getByDescricao(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  Upper(descricao) like Upper(?) "; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, '%' + tb_produtoT.getDescricao()+'%' );
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getByReferencia(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  Upper(referencia) like Upper(?) "; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, '%' + tb_produtoT.getReferencia()+'%' );
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getByUnidade_medida(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  Upper(unidade_medida) like Upper(?) "; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, '%' + tb_produtoT.getUnidade_medida()+'%' );
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getByPreco_compra(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  preco_compra = ? "; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getPreco_compra());
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getByLucro(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  lucro = ? "; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getLucro());
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 	 public List<Tb_produtoT> getByPreco_venda(Tb_produtoT tb_produtoT) throws Exception { 
		 PreparedStatement pStmt=null;
		 ResultSet rs=null;
		 try {
			 String sql = "select * from tb_produto where  preco_venda = ? "; 
			 pStmt = con.prepareStatement(sql);
			 pStmt.setObject(1, tb_produtoT.getPreco_venda());
			 rs = pStmt.executeQuery();
 			 return resultSetToObjectTransfer(rs); 
 		 } catch (Exception e) {
 			  throw e;
 		} finally {
 			 try { rs.close();
 			 pStmt.close();} catch (Exception e) {}
 			  
 		} 
 	} 

 

 }